|
Date : 15 mai 1990 Protection : disquette - piste 40d - weak bits Programme : KNIGHT FORCE Outils : QUAID, PERISCOPE, CARTE PANO_AT Temps pass� : 45 minutes Fichier : KNIGHT.EXE Soci�t� : TITUS Divers : Origine : INDONESIE Num�ro : 023 Avec ce type de logiciel il existe deux grandes cat�gories de protection ; Celle qui consiste � juste aller v�rifier si la protection est en place. Et celle qui en fonction de la protection charge en m�moire une portion de code et l'execute. Il va sans dire que c'est la premi�re cat�gorie qui se r�v�le la plus simple � contourner. KNIGHT FORCE appartient � la premi�re cat�gorie. En premier lieu utiliser QUAID pour d�terminer quelle INT est utilis�e pour lire la protection, en fait c'est syst�matiquement l'INT 13 ( interface disquette ) mais le BIOS transforme cette interruption en INT 40 lorsqu'un disque dur se trouve dans le PC. Avec QUAID on s'appercoit que le soft va lire la piste 40. En faisant du pas a pas on r�ussi � sortir de l'INT 40 puis du BIOS et du m�me coup de l'INT 13 qui elle figure dans le code du programme. Mais les possibilit�s de QUAID s'arr�tent ici, et il est temps de lancer la carte PANO avec PERISCOPE ( ce dernier se plante lamentablement lorsqu'on l'utilise seul en version SOFT ). Mais le probl�me qui se pr�sente maintenant c'est de trouver les correspondances d'adresses de charchement de CS car la place que prend QUAID en m�moire n'est pas la m�me que celle utilis�e par PERISCOPE. Heureusement les offsets sont les m�mes. Et comme PERISCOPE refuse de s'arr�ter sur quoi que ce soit - INT 13, BC, BM, GT, RUN, rien n'y fait d�s que le soft est lanc� il se d�roule en FULL SPEED. La seule solution c'est de d�clencher la NMI par l'interm�diaire de la carte PANO sur une adresse d'entr�e sortie disquette; 3F0-3FF Je commence � l'adresse 3F0 en ne validant pas la NMI mais en surveillant seulement l'affichage. A l'adresse 3F4 en lecture la NMI est d�clench�e, il ne reste plus qu'� relancer le soft en validant la NMI. PERISCOPE s'affiche en plein dans l'INT 40 - c'�tait pr�vu, pas moyen de faire autrement - un long pas a pas avec des TN ( les JN ne sont pas possibles en ROM ) tout en modifiant les flags rencontr�s pour sortir plus vite du BIOS. ( rfl ) On fini par rentrer dans le programme apr�s l'INT 13 � l'adresse CS:IP 379A:04EC ( adresse pr�te � �tre plac�e sur les roues codeuses ) En faisant une recherche avec S CS:0 FFFF CD 13 on trouve 2 autres appels � l'INT 13 aux offsets 51F et 52F. En d�roulant la premi�re boucle on trouve un RET qui nous ram�ne � toute une s�rie de CALL. ( voir ci-dessous ) Le premier et le second CALL englobent forc�ment les 3 appels � l'INT 13. Le premier essaie sous PERISCOPE a �t� d'y placer des NOP ( 10 ) pour voir... et effectivement le soft fonctionne correctement. Mais ne fonctionne plus une fois la modif faite par PCTOOLS dans le fichier ! Une visualisation de la zone permet de voir que le soft y �crit des choses bizzares, ceci m�lang� avec mes NOP g�n�re des instructions non pr�vues. Autant dire que le soft ne demande pas son reste pour se planter. Une protection suppl�mentaire , ou une astuce pour bien v�rifier la pr�cense des acc�s disquettes peut-�tre... Heureusement les 3 premiers NOP ne sont pas "touch�s"; c'est suffisant pour y placer un JMP qui contourne les 2 CALL ind�sirables. AX=0000 BX=01AE CX=0003 DX=8C79 SP=0FD4 BP=0FDA SI=100D DI=0111 DS=338D ES=396A SS=396A CS=26E3 IP=026E NV UP EI PL ZR NA PE NC WR SS:0FD0 = 26E3 1700 26E3:026E 9AB9049A37 CALL 379A:04B9 26E3:026E est l'arr�t sur adresse affich� sur la carte PANO_AT 26E3:026E 9AB9049A37 CALL 379A:04B9 Ce CALL a �t� remplac� par JMP 0278 ----> EB08 Et les 3 octets restant sont ignor�s tant qu'ils ne modifient pas la suite des instructions en 0278. 26E3:0273 9A03059A37 CALL 379A:0503 26E3:0278 9A4D0F9A37 CALL 379A:0F4D 26E3:027D 9AFF0C1629 CALL 2916:0CFF 26E3:0282 9A1308E326 CALL 26E3:0813 26E3:0287 C7067D560100 MOV WORD PTR [567D],0001 26E3:028D 9AE304E326 CALL 26E3:04E3 26E3:0292 9A5108E326 CALL 26E3:0851 26E3:0297 9A9505E326 CALL 26E3:0595 26E3:029C 9AA00D1629 CALL 2916:0DA0 26E3:02A1 9A4F131629 CALL 2916:134F 26E3:02A6 9A0A03E326 CALL 26E3:030A 26E3:02AB C606F53E00 MOV BYTE PTR [3EF5],00 26E3:02B0 C7062A31C800 MOV WORD PTR [312A],00C8 Avec PCTOOLS chercher : SL 11 DEP 270 et remplacer 9AB9 par EB08. FREDDY |